package com.ftg.learn.chapter14.exception;

import com.ftg.learn.chapter14.Student;

import java.io.*;
import java.util.HashMap;

/**
 * Serializable 这是一个接口 , 让这个接口修饰的java可以序列化
 * 错误只能被 抛出不能被 捕获
 * 异常 抛出  捕获 try catch
 *
 * @author kangjx
 * @createTime 2022/8/19
 */
public class LearnException {

    /**
     * 值传递 :
     *
     * @return
     */
    public int find(int[] arr, Integer val) throws NullPointerException, IllegalArgumentException {
        if (val == null) {
            throw new IllegalArgumentException("learnexception 1001023: 哥们，val不能为null");
        }
        if (arr == null) {
            //手工抛出异常 [throw] [new] [异常类]
            throw new NullPointerException("learnexception 1001024: 哥们，arr不能为null");
        }
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == val) {
                return i;
            }
        }
        return -1;
    }

    /**
     * 值传递 : 引用类型的地址
     *
     * @param stu
     */
    public void add(Student stu) {
        stu.setAge(23);
    }


    public Student testException() {
        Student s = new Student("张三",1,1);
        try {
            s.setSno(2);
            if(s == null) {
                //自己写的一个java类，这个类的功能是exception我们把这个类叫做自定义异常
                throw new ZrrdEXception("err-1009:实例没有实例化!!!");
            }
           return s;
        } catch (Exception e) {
            s.setSno(3);
            return s;
        } finally {
            Student s1 = new Student("张三",1,1);
            s1.setSno(4);
        }
    }


    public static void main(String[] args)  {
        LearnException l = new LearnException();

        //i o input(输入 把三方文件解析到java里面的过程) outpout(输出 把java datacache 区里面的内容写到指定文件里的操作)
        //File 代表了一个抽象的文件夹(目录)或者文件
        File file = new File("~\\Desktop\\aa.txt");
        String abc = "我爱中国";

//        try witch rescourse

        try(
            InputStream  inputStream = new FileInputStream(file);
        ){
            int a = 0 ;
            while((a = inputStream.read()) != -1){
                System.out.println(a);
            }
            System.out.println(a);
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
//
//        if(!file.exists()){
//            //nio
//            InputStream inputStream = null;
//            try {
////                file.createNewFile();
//                inputStream = new FileInputStream(file);
//                int a = 0 ;
//                while((a = inputStream.read()) != -1){
//                    System.out.println(a);
//                }
//                System.out.println(a);
//            } catch (IOException e) {
//                System.err.println(e.getMessage());
//            }finally {
//                if(null != inputStream){
//                    try {
//                        inputStream.close();
//                    } catch (IOException e) {
//                        e.printStackTrace();
//                    }
//                }
//            }
        }


//        //捕获
//        try {
//            System.out.println("abc");
//            l.find(null, null);
//            System.out.println("ee");
//        } catch (NullPointerException | IllegalArgumentException e) {
//            //日志  : ---> .log 日志  2022.8.19.txt  日期 时间
//            //  20228.19.error.log  log4j slfj
//            System.out.println(e.getMessage());
//        } finally {
//
//        }


//    }

}
